可编程DMA控制器

您所在的位置:网站首页 intel 寄存器 可编程DMA控制器

可编程DMA控制器

#可编程DMA控制器| 来源: 网络整理| 查看: 265

转载请注明来源:imred的专栏 | http://blog.csdn.net/imred/article/details/50601735 (本文是对一篇英文博客的翻译和补充,原文地址http://mediatoget.blogspot.in/2013/01/programmable-dma-controller-intel-8257.html) Intel 8257是一种控制DMA(Direct Memory Access)操作的芯片,它可以将数据直接在IO设备和内存之间进行交换,而不需要经过CPU,所以它的数据传输速率可以很快。 8257有以下特点:

8257有四个通道(channel),所以它支持4个设备同时进行DMA操作。 每一个通道都可以被独立地编程,每次最多可以传输64kb数据。 每个通道可以独立的进行读传输、写传输和校验传输。

芯片共有40个针脚,如下图所示: 这里写图片描述

8257功能模块图示如下: - 8257功能模块有数据总线缓冲区,读/写逻辑,控制逻辑,优先级解析器和4个DMA通道。 - 每个DMA通道都有两个16位可编程寄存器,分别为地址寄存器和计数寄存器。 这里写图片描述 (MEMR为存储器读操作信号,MEMW为存储器写操作信号,IOR为外设读操作信号,IOW为外设写操作信号。其他信号见http://blog.csdn.net/imred/article/details/50357819) - 地址寄存器用来存放用于DMA数据传输的内存起始地址。 - 每进行一次读/写/校验传输后,地址寄存器中的地址都会自动增加。 - 计数寄存器用来对通过DMA进行传输的数据的字节数或字数进行计数。它保持着要传送的字节数,在每次传送后此寄存器减量。当这个寄存器的值减为零时,Terminal Count信号将产生。 - 计数寄存器的格式如下: 这里写图片描述

B0-B13这14位用于计数,前面的两位用于标识DMA传输的类型(读/写/校验传输)。进行读传输时,数据从内存传输到I/O设备。进行写传输时,数据从I/O设备传输到内存。校验操作会产生DMA地址但不产生DMA内存和I/O控制信号。8257还有两个8位的寄存器,分别叫做模式设置寄存器和状态寄存器。模式设置寄存器的格式如下: 这里写图片描述模式设置寄存器有如下功能:

打开/关闭一个通道。 将优先级指定为固定型(Fixed)/循环型(rotating)。 计数终止(terminal count)时停止DMA。 延长/一般 写时间 自动重载通道2

B0-B3这4位用于打开或者关闭通道0-3,1代表打开,0代表关闭。如果B4被设为1,通道有循环型优先级。如果设为0,通道有固定型优先级。在循环型优先级中,服务完一个通道后就会把这个通道优先级设为最低。在固定型优先级中,通道0优先级最高,通道3优先级最低。如果B5被设为1,低电平有效的写信号(MEMW和IOW)的时间会被延长。如果B6被设为1,计数终止后会停止DMA。B7用来指定通道2的自动重载特性。如果B7被设为1,通道3的计数寄存器和地址寄存器会在通道2计数终止后自动载入至通道2的计数寄存器和地址寄存器。当这种模式打开后,可用的通道数由4减少至3。

状态寄存器的格式如下: 这里写图片描述

B0-B3这4位用于指明通道0-3是否计数终止。

这些状态位在处理器进行读操作后清除。B4称为更新标识位(update flag),如果为1,说明通道2的寄存器已经在自动载入模式的操作中重载了通道3的寄存器。8257寄存器的内部地址如下表所示: 这里写图片描述

转载请注明来源:imred的专栏 | http://blog.csdn.net/imred/article/details/50601735



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3